#include<bits/stdc++.h>
#define sd(n) scanf("%d",&n) 
#define sld(n) scanf("%lld",&n)
#define pd(n) printf("%d", (n))
#define pld(n) printf("%lld", n)
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define fi first
#define se second
const int N=2e5;
#define INF 0x7fffffff
typedef long long int ll;
using namespace std;

int ans=0,num=0;
bool st[10][10];
int dx[]={-1,0,1,0},dy[]={0,1,0,-1};
void dfs(int x,int y)
{
	if(num==16)
	{
		ans++;return;
	}
	for(int i=0;i<4;i++)
	{
		int x2=x+dx[i];int y2=y+dy[i];
		if(x2<0||x2>=4||y2<0||y2>=4||st[x2][y2]) continue;//越界
		st[x2][y2]=true;num++;
		dfs(x2,y2);
		st[x2][y2]=false;num--;
	}
}
int main()
{
	for(int i=0;i<4;i++)
	{
		for(int j=0;j<4;j++)
		{
			num=1;
			st[i][j]=true;
			dfs(i,j);
			st[i][j]=false;//初始点的复原
		}
	}
	pd(ans);puts("");
	return 0;
}